跳到主要内容

Git 的裸仓库

bare 裸仓库

裸仓库指 .git 文件夹,而工作目录指除 .git 文件夹外的其他文件

git --bare init 用来创建裸(bare)仓库,里面只存储历史和元信息,不会维护工作目录。

那么 bare 库有什么用呢?

git@gitee.com:alsritter/tempImage.git

可以注意到 Github、Gitee 这些远程库的资源结尾都是 .get,也没有本地库那样的 .git 文件夹,说明这些库都是使用的 bare

使用裸库生成工作目录

使用裸库的钩子来生成工作目录

首先在裸仓库的 /hooks 文件夹下新建 post-receive 文件

#!/bin/sh
git --work-tree=工作目录 --git-dir=裸仓库 checkout -f

授予执行权限

$ sudo chmod +x post-receive
警告

Linux 的换行符和 Windows 的是不一样的,需要把文件的换行符改成 Linux 的才行

将现有仓库导出为裸仓库

cd /var/www/project/
git init
cd /home/git/repositories/
git clone --bare /var/www/project/ project.git
cd /var/www/project/

# 在你的项目目录添加远程服务器
git remote add origin /home/git/repositories/project.git
cd /var/www/project/

# 提交初始化代码
git add .
git commit -m "init"
git push origin master

克隆裸仓库

和 github 操作方式类似

# 克隆远程服务器的仓库
git clone root@alsritter.icu:/home/ubuntu/git/TEST.git
# 提取出为裸仓库
git clone --bare /home/ubuntu/git/TEST Test.git

References